#ifndef NODE_H
#define NODE_H

#include "utils.h"

typedef enum {
	TPROGRAM, 
	TMAIN,
	TFUNCTION,
	TPROCEDURE,
	TCALLFUN,
	TRETURN,
	TBLOC, 
	TIF,
	TWHILE,
	TOPBINAIRE,
	TNON,
	TMOINSUNAIRE,
	TARRAY,
	TVAR,
	TCST
}typeNoeud;

typedef struct node_s {
    char* lexeme;
    info* info; //entree
    typeNoeud type;
    void* infos; //
    struct node_s* enfants;//liste chainee vers les enfants
    struct  node_s* frere; // liste chainee vers les frere de meme niveau
}node;

// arbre
typedef struct tree_s {
    node* racine;
}tree;

// arbre
node* mkleafid(char* lex, entree* label, typeNoeud type);
node* mkleafcst(char* lex, entree* e, typeNoeud type);
node* mknode(char* lex, entree* label, typeNoeud type, void* infos, node* enfants, node * frere);
void link_brothers(node * e1, node *l);

//affichage
void decoderTypeNoeud(typeNoeud t);

#endif
